home *** CD-ROM | disk | FTP | other *** search
- ;wac file - nestable IF/THEN/ELSE/ENDIF boolean logic
- ;
- ;WAC post directory w:\vp\program\wac - commands listed in GAME.WAC
- ;WAC debug screen under shift-F12, numlock arrows to select and scroll
- ;
- ;GLOBAL WAC is GAME.WAC (executed first)
- ;
- ;MISSION WAC is misname.WAC (executed second)
- ;
- ;Left to Right order of operations
- ;
- ;---WAC LANGUAGE COMMANDS
- ;nestable flow control
- ; IF THEN ELSE ENDIF
- ;boolean logic
- ; AND OR XOR
- ;function modifier
- ; NOT
- ;comments
- ; ; /
- ;
- ;Syntax - parens optional, line returns and tabbing optional
- ;
- ; if trigger1(params) and trigger2(params) then
- ; event1(params)
- ; event2(params)
- ; endif
- ;
- ;Example
- ;
- ; I want to open doors in group 12 the first time I enter area 1501
- ;
- ; if location(1501) and never() then
- ; opendoors(12)
- ; endif
- ;
-
- ;---VARIABLES & IMMEDIATES (a variable can always be used as an immediate)
- ;"STRING" immediate string value
- ;# immediate decimal number
- ;anim_move immediate equate from ADM file
- ;ammo_name immediate ammo name (ex. ammo2tgt ammo_rocket 1)
- ;fx_fxname immediate effect name (ex. fxrain fx_effect_lightning)
- ;effect_name immediate effect name (ex. fxrain effect_lightning)
- ;SS_SoundSet immediate soundset name
- ;sSoundSet immediate soundset name (alternate syntax)
- ;face_name immediate face name (ex. ssnface 45 face_happy)
- ;V# V0 to v511 game variables, cleared at start of mission
- ;G# G0 to vG11 global variables, not cleared during link
- ;M# Music Script Variable
- ;result current return/accumulator value (mostly for debug)
- ;ticks number of seconds into game
- ;wind used by SWING, FLICKER, and particle wind2
- ;health player's health/hp value
- ;mana player's mana
- ;neartype the type of the nearest enemy (from items.def dialog)
- ;neardist the distance to the nearest organic
- ;nearmove the anim move of the nearest organic (setable)
- ;nearid the unique dcb/id of the nearest organic
- ;neartid the id of the organic's target or 0 if no target
- ;nearblind
- ;nearflying
- ;nearguard
- ;nearSSN
- ;nearWP
- ;nearGroup
- ;nearHP
-
- ;---TRIGGERS (# param can be number or variable)
- ;random(#) randomly true 1 in # times, sets RND for additional tests
- ;elapse(#) true if # seconds have past since last activated
- ;chain(#) true if previous IF fired # seconds ago
- ;link(#1,#2) true if IF #1 away from current IF fired #2 seconds ago
- ; link(-1,10) is same as chain(10)
- ;past(#) true if past # seconds into game
- ;never() true if event has never fired
- ;location(#) true if you are at that location
- ;outside() true if you are not in a blink box
- ;waveready() true if no talking going on
- ;groupdead(#) true if entire group is dead
- ;groupalive(#) true if anyone in group is alive
- ;ssndead(#) true if ssn is dead
- ;ssnalive(#) true if ssn is alive
- ;ssnride(#) true if any organic is standing on SSN
- ;meride(#) true if player is standing on SSN
- ;ssngun(#) true if SSN is using an emplaced weapon
- ;ssnloc(#,#) true if vehical or person is in location
- ;dooropen(#) true if group # has door open
- ;event(#) true if med event has triggered
- ;squadevent(#) true if squad event is in que, sets squadSSN to talker
- ;
- ;---VARIABLE COMPARE
- ;eq(#,#) true if #==#
- ;ne(#,#) true if #!=#
- ;lt(#,#) true if #<#
- ;gt(#,#) true if #>#
- ;le(#,#) true if #<=#
- ;ge(#,#) true if #>=#
- ;true(#) true if #!=0
- ;false(#) true if #==0
- ;
- ;---VARIABLE MODIFY
- ;set(var,#) set var to #
- ;add(var,#) add # to var
- ;sub(var,#) subtract # from var, clamp at 0
- ;inc(var) add 1 to var
- ;dec(var) subtract 1 from var, clamp at 0
-
- ;---EVENTS (# param can be number or variable)
- ;squadclear clears squadevent selected by squadevent(#)
- ;forceanim(anim) forces all organics into anim slot (debug only)
- ;report("text") pop-up debug report window
- ;report#("text",#) pop-up debug report window with number
- ;text("text") output text to chat - right side
- ;text#("text",#) output text to chat w/# - right side
- ;consol("text") output text to consol - left side
- ;consol#("text",#) output text to consol w/# - left side
- ;
- ;flash produce a flash of lightning & thunder
- ;farflash produce a far away flash of lightning & thunder
- ;quake(#) earthquake for # 10th of a seconds
- ;
- ;sun(#,#,#) sets sun rgb ENV override
- ;sky(#,#,#) sets sky rgb
- ;ground(#,#,#) sets ground rgb
- ;ceiling(#,#,#) sets ceiling rgb
- ;floor(#,#,#) sets floor rgb (inside ground)
- ;lightning(#,#,#) sets the color of the lightning
- ;cloud(#,#,#) sets the cloud color
- ;gain(#,#,#) sets the brightness of the whole scene
- ;
- ;fogcolor(#,#,#) set fogcolor to R,G,B, changes in 1 second
- ;fog(#,#,#) set fogcolor to R,G,B (same as fogcolor)
- ;fogtype(#) set fog type 0=fog, 1=haze, 2=haze wall, 3=fog wall
- ;fogdist(#) sets fogdist to # meters (same as set(fog,#)
- ;
- ;sound(sSSNAME, dist, head) plays soundset at distance(meters) and heading(bangle)
- ;
- ;nearwave("wave.wav", dist) plays wave file from the mouth of the nearest enemy with max dist to be heard
- ;nearanim(anim_move) sets the nearest enemy to ADM move slot
- ;SSNwave(ssn, "wave.wav", dist) plays wave file from the mouth of the ssn with max dist to be heard
- ;SSNanim(ssn, anim_move) sets the ssn to ADM move slot
- ;SSNradio(ssn, "wave.wav", volume) sets the ssn to talk on radio
- ;
- ;SSNmax(ssn, maxengage) set max engage distance
- ;SSNmin(ssn, minengage) set min engage distance
- ;SSNatt(ssn, maxattack) set max attack distance
- ;GroupMax(group, maxengage) set max engage distance
- ;GroupMin(group, minengage) set min engage distance
- ;GroupAtt(group, maxattack) set max attack distance
- ;remove(grp) remove group # without a trace
- ;kill(grp) kill group #
- ;removeSSN(ssn) remove SSN # without a trace
- ;killSSN(ssn) kill SSN #
- ;teleport(grp,tgt) teleport group # to target #
- ;telessn(ssn, tgt) teleport SSN # to target #
- ;targetfx(tgt) create med particle fx at target #
- ;sound2tgt(ss,tgt) create ssoundset # at target # (ex. sound2tgt sSoundSet 1)
- ;ammo2tgt(ammo,tgt) create ammo # at target # (ex. ammo2tgt ammo_rocket 1)
- ;fx2tgt(fx,tgt) create fx # at target # (ex. fx2tgt effect_lightning 1)
- ;opendoors(group) open doors in group #
- ;closedoors(group) close doors in group #
- ;SSNtoWP(ssn, wp) redirect SSN to WP list
- ;GtoWP(group, wp) redirect Group to WP list
- ;ammorain(ammo) rain down ammo # somewhere near player
- ;fxrain(fx) rain down effect # somewhere near player
- ;ssncspd(ssn,speed) set ssn to combat speed of #
- ;ssnpspd(ssn,speed) set ssn to patrol speed of #
- ;ssnuse(ssn) snap ssn to emplaced weapon if within 3 meters
- ;ssnrelease(ssn) remove ssn from emplaced weapon
- ;ssn2ssn(ssn, ssn) have ssn goto ssn and try to snap to emplaced
- ;ssnface(ssn, face) set face expression of ssn
- ;
- ;example select 1 or 2 randomly
- ; if random 2 then
- ; text "1"
- ; else
- ; text "2"
- ; endif
- ;
- ;example select 1 or 3 randomly
- ; if random 3 then
- ; text "1"
- ; else if eq(rnd, 2)
- ; text "2"
- ; else if eq(rnd, 3)
- ; text "3"
- ; endif
- ; endif
- ; endif
-
- ;*********************************************************
-
-
-
-
- if waveready and elapse(12) then // and eq(neartype,1)
- consol ("srgt talking")
- nearwave("taunt1.wav", 100)
- nearanim anim_idle_7 //pace and talk
- endif
-
-